//
//  YPBaseTableView.h
//  project
//
//  Created by 姚敦鹏 on 2018/10/13.
//  Copyright © 2018年 rocHome. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "YPBaseTableViewCell.h"

@class YPBaseTableView;

typedef void(^PullBlock)(YPBaseTableView *currentTable);
typedef void(^EmptyTapBlock)(YPBaseTableView *currentTable);

/** 点击tableView 响应 */
@protocol TouchTableViewDelegate <NSObject>

@optional

- (void)tableView:(UITableView *)tableView
     touchesBegan:(NSSet *)touches
        withEvent:(UIEvent *)event;

- (void)tableView:(UITableView *)tableView
 touchesCancelled:(NSSet *)touches
        withEvent:(UIEvent *)event;

- (void)tableView:(UITableView *)tableView
     touchesEnded:(NSSet *)touches
        withEvent:(UIEvent *)event;

- (void)tableView:(UITableView *)tableView
     touchesMoved:(NSSet *)touches
        withEvent:(UIEvent *)event;

@end

@interface YPBaseTableView : UITableView
<DZNEmptyDataSetSource,DZNEmptyDataSetDelegate>

@property (nonatomic,weak) id<TouchTableViewDelegate> touchDelegate;

/** 页面为空 */
@property (nonatomic,assign) YPPageEmptyStatus emptyStatus;

/** 下拉刷新 */
@property (nonatomic,copy) PullBlock pullDownBlock;
/** 上拉加载 */
@property (nonatomic,copy) PullBlock pullUpBlock;
/** 点击空 */
@property (nonatomic,copy) EmptyTapBlock emptyTapBlock;

- (void)setPullDownBlock:(PullBlock)pullDownBlock
        withPullUpBlock:(PullBlock)pullUpBlock;


/**
 设置刷新

 @param isPullDown 是否可以下来刷新
 @param isPullUp   是否可以上拉刷新
 */
- (void)setIsPullDown:(BOOL)isPullDown
         withIsPullUp:(BOOL)isPullUp;


/** 结束刷新 */
- (void)pullRefreshEnd;
/** 没有更多数据 */
- (void)pullRefreshNotMore;


/**
 初始化

 @param frame       CGRect
 @param style       UITableViewStyle
 @param isPullUp    是否集成下拉刷新
 @param isPullDown  是否集成上拉刷新
 @return YPBaseTableView
 */
- (instancetype)initWithFrame:(CGRect)frame
                        style:(UITableViewStyle)style
                     isPullUp:(BOOL)isPullUp
                   isPullDown:(BOOL)isPullDown;

/**
 初始化
 
 @param frame       CGRect
 @param isPullUp    是否集成下拉刷新
 @param isPullDown  是否集成上拉刷新
 @return YPBaseTableView
 */
- (instancetype)initWithFrame:(CGRect)frame
                     isPullUp:(BOOL)isPullUp
                   isPullDown:(BOOL)isPullDown;

@end
